package GUI;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * LoginFrame est la classe representant la fenetre de login
 *
 * @author cyrene
 * @version 1.0
 */

public class LoginFrame extends JFrame implements UserInterface,ActionListener{

    
    private EnsEtud myEnsEtud;

    /**
     * container est un Jpanel 
     */
    private JPanel container;
    
    /**
     * titre est un Jlabel qui contiendra le titre de la fenetre
     */
    private JLabel titre;
    
    /*
     *champId est un JTextField qui va contenir l'id de l'utilisateur 
     */
    private JTextField champID;
        
     /**
     * champMotDePasse est un jTextField qui va contenir le mot de passe de l'utilisateur
     */
    private JTextField champMotDePasse;

    /**
     * valid est un Jbutton qui permettra de valider 
     */
    private JButton valid;
    
    /*
     * quit est un Jbutton qui permet de quitter
     */
    private JButton quit;


    /**
     * PanneauTitre est un Jpanel
     */
    private JPanel PanneauTitre;
    
    /*/**
     * Ppanneauchamps est un Jpanel
     */
    private JPanel panneauChamps;
    
    /**
     * PanID est un Jpanel
     */
    private JPanel panID;
    
    /**
     * panMDP est un Jpanel
     */
    private JPanel panMDP;


    /**
     * methode loginframe qui appel display
     */
  public LoginFrame()
  {
      this.display();
      
  }
  
  /**
   * methode display qui gere l affichage de la page de login
   */

  public void display() {

      this.setVisible(true);
      this.setTitle("Cyrene");
      this.setLocation(300, 300);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


      /////////////////////////
      
      

      this.container = new JPanel();
      this.setPanneauTitre(new JPanel());
      this.setPanneauChamps(new JPanel());
      this.setPanID(new JPanel());
      this.setPanMDP(new JPanel());
      
      this.setContentPane(container);
      

      this.titre = new JLabel("Veuillez saisir votre identifiant et votre mot de passe : ");
      
      this.valid = new JButton("OK");
      this.quit = new JButton("Quitter");

      this.champID = new JTextField();
      this.champMotDePasse = new JTextField();
      
      ////////
      
     this.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.anchor = GridBagConstraints.CENTER;
        c.insets = new Insets(0, 0, 0, 0);

        /* Ajout des composants */
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 1;
        c.gridheight = 1;
        c.weightx = 1;
        c.weighty = 1;
        this.add(this.titre, c);


        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 1;
        c.gridheight = 1;
        c.weightx = 1;
        c.weighty = 1;
        c.insets = new Insets(0,0,0,0);
                this.champID.setPreferredSize(new Dimension(170,22));
        this.add(this.champID,c);

                c.gridx = 1;
        c.gridy = 1;
        c.gridwidth = 1;
        c.gridheight = 1;
        c.weightx = 1;
        c.weighty = 1;
        c.insets = new Insets(0,0,0,0);
                this.valid.setPreferredSize(this.quit.getPreferredSize());
                this.quit.addActionListener(this);
        this.add(this.valid,c);


                c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 1;
        c.gridheight = 1;
        c.weightx = 1;
        c.weighty = 1;
        c.insets = new Insets(0,0,0,0);
                this.champMotDePasse.setPreferredSize(new Dimension(170,22));
        this.add(this.champMotDePasse,c);


                c.gridx = 1;
        c.gridy = 2;
        c.gridwidth = 1;
        c.gridheight = 1;
        c.weightx = 1;
        c.weighty = 1;
        c.insets = new Insets(0,0,0,0);
        this.add(this.quit,c);

                this.valid.addActionListener(this);
                

      this.setMinimumSize(new Dimension(600, 200));
       
     
      //this.pack();
      
  }

  /**
   * methode login qui permet la connexion d un utilisateur
   */
  public void login() {
  }

    public void actionPerformed(ActionEvent e) {

        if(e.getSource()==this.valid){ 
            String loginMDP=String.valueOf(this.champMotDePasse.getText());
            if (loginMDP.equals("0000")){
                this.setMyEnsEtud(new EnsEtudFrame());
                this.dispose();    
            }
                
                
        }
        else
        {
             if(e.getSource()==this.quit)
             {
                 System.exit(0);
             }
        }
    }

    /**
     * modification de myEnsEtud
     *
     * @param myEnsEtud
     * @since 1.0 
     */
    public void setMyEnsEtud(EnsEtud myEnsEtud) {
        this.myEnsEtud = myEnsEtud;
    }
    
    /**
     * retourne myEnsEtud
     *
     * @return myEnsEtud 
     */

    public EnsEtud getMyEnsEtud() {
        return myEnsEtud;
    }
    
    /**
     * modification de panneauTitre
     *
     * @param panneauTitre 
     */

    public void setPanneauTitre(JPanel panneauTitre) {
        PanneauTitre = panneauTitre;
    }
    
    /**
     * retourne panneauTitre
     *
     * @return panneauTitre 
     */


    public JPanel getPanneauTitre() {
        return PanneauTitre;
    }

    /**
     * modification de panneauchamps
     *
     * @param panneauChamps
     */

    public void setPanneauChamps(JPanel panneauChamps) {
        this.panneauChamps = panneauChamps;
    }

    /**
     * retourne panneauChamps
     *
     * @return panneauChamps 
     */

    public JPanel getPanneauChamps() {
        return panneauChamps;
    }

    /**
     * modification de panID
     *
     * @param panID
     */
    public void setPanID(JPanel panID) {
        this.panID = panID;
    }

    /**
     * retourne panID
     *
     * @return panID 
     */
    public JPanel getPanID() {
        return panID;
    }

    /**
     * modification de panMDP
     *
     * @param panMDP
     */
    public void setPanMDP(JPanel panMDP) {
        this.panMDP = panMDP;
    }
    
    
    /**
     * retourne panMDP
     *
     * @return panMDP 
     */
    public JPanel getPanMDP() {
        return panMDP;
    }

}